Stm32

您所在的位置:网站首页 stm32 usb鼠标 Stm32

Stm32

2023-09-17 04:48| 来源: 网络整理| 查看: 265

简介:

利用stm32自身功能,采集adc,并利用usb连接电脑实现手柄功能。

材料 (软件):

    stm32c8t6最小系统板

  摇杆

网络图片,侵删

    3.     USB线及ST-LINK

    4.     Keil-Mdk及Cubemx

一、基础配置

    1.     sys设置SW(我是使用SW烧入)

SYS

    2.     时钟配置。

时钟配置

    3. ADC配置

ADC配置(我使用了4通道ADC)

    4.     勾选USB及USB_DEVICE,配置选用默认即可。(并选择HID)

USB_DEVICE中选择

    5.     最后引脚如下图(不包括GPIO及串口引脚)

二、代码

1.     ADC读取(注意,暂时不用的CH最好接地,否则各通道会互相干扰)。

依次读取四个通道的ADC

2.     数据处理及发送

    

发送设置要传输的数据

至此,ADC读取完成。下面配置USB。注意main.c中要#include “usbd_hid.h”

 

3.     修改usbd_hid.c的报文相关配置。(告诉主机PC插入的usb是什么设备,cubemx默认生成为鼠标设备报文)

函数参数的意义可参考https://blog.csdn.net/zhoutaopower/article/details/82469665

需要修改的有

        1.     每一个函数中注释为/*wItemLength: Total length of Report descriptor*/的数值,共3处。(如何修改见下文)

        2.     注释为/*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/的数值,1是键盘,2是鼠标,其他(我们的手柄)都是0.

        3.     最后修改报告HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE]中的值(关键)。可以用HID Descriptor tool生成。(如下图,可根据自己的需要配置)

左边是MDK,右边为HID Descriptor tool

这是也就可以填第一处需修改的地方(wItemLength)。也就是你的报告中的长度,我这里有27个数字,故修改wItemLength处为27。

如图

推荐阅读https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/

三、如此,可在设备及打印机看见我们的手柄了,

设备及打印机

还可在游戏控制器中进行校准及测试。

本案例简单验证了stm32手柄项目的可行性,也还要很大改进空间。

演示视频地址:STM32-USB-手柄(一)

原文地址:https://space.bilibili.com/121940795/article



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3